library(tibble)
library(readxl)
library(dplyr)
library(gtExtras)
library(ggplot2)
library(plotly)
library(viridis)
library(hrbrthemes)

setwd("C:/Users/felip/Desktop/R/3_analise")

data <- readxl::read_xlsx ("BPAs_FDTs_ RAVLTs_EscoreZ.xlsx", sheet = 1)

data

#gt_plt_summary(data)



#######################     BPA ANALYSIS


summary(data)
      ID               GROUP            EDU_LEVEL              AGE       
 Length:117         Length:117         Length:117         Min.   :20.00  
 Class :character   Class :character   Class :character   1st Qu.:26.00  
 Mode  :character   Mode  :character   Mode  :character   Median :31.00  
                                                          Mean   :32.91  
                                                          3rd Qu.:39.00  
                                                          Max.   :49.00  
  LIMIT_AGE         BPA_CONC_POINTS  BPA_CONC_EscoreZ  BPA_DIVID_POINTS
 Length:117         Min.   : 44.00   Min.   :-2.0037   Min.   : 26.00  
 Class :character   1st Qu.: 80.00   1st Qu.:-0.2828   1st Qu.: 72.00  
 Mode  :character   Median : 92.00   Median : 0.3186   Median : 80.00  
                    Mean   : 92.15   Mean   : 0.3112   Mean   : 80.88  
                    3rd Qu.:105.00   3rd Qu.: 0.8875   3rd Qu.: 94.00  
                    Max.   :120.00   Max.   : 1.7190   Max.   :116.00  
 BPA_DIVID_EscoreZ BPA_ALTERN_POINTS BPA_ALTERN_EscoreZ
 Min.   :-1.8505   Min.   : 50.00    Min.   :-1.5930   
 1st Qu.:-0.1214   1st Qu.: 87.00    1st Qu.: 0.1048   
 Median : 0.2789   Median : 99.00    Median : 0.6705   
 Mean   : 0.3513   Mean   : 97.28    Mean   : 0.5853   
 3rd Qu.: 0.8575   3rd Qu.:110.00    3rd Qu.: 1.1660   
 Max.   : 1.8387   Max.   :120.00    Max.   : 1.8333   
#utils::View(data)


p1 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,EDU_LEVEL , AGE, BPA_CONC_POINTS , BPA_CONC_EscoreZ  )

p2 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,EDU_LEVEL, AGE, BPA_DIVID_POINTS , BPA_DIVID_EscoreZ  )

p3 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,EDU_LEVEL ,AGE, BPA_ALTERN_POINTS , BPA_ALTERN_EscoreZ )



 
 ####################################     P1


coresBPA <- c("#1a2887", "#799de4")



p1 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", BPA_CONC_POINTS,
                      "\nZ-Score: ", BPA_CONC_EscoreZ, sep="")) %>%
  ggplot(aes(x = AGE, y = BPA_CONC_EscoreZ, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresBPA) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score BPA Focused Attention", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p1

pp1 <- ggplotly(p1, tooltip="text") 


pp1


 ##################################       P2

p2 <- data %>%
  arrange(ID) %>%
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", BPA_DIVID_POINTS,
                      "\nZ-Score: ", BPA_DIVID_EscoreZ, sep="")) %>%
  ggplot(aes(x = AGE, y = BPA_DIVID_EscoreZ, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresBPA) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score BPA Focused Attention", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    


#p2

pp2 <- ggplotly(p2, tooltip="text")
 

pp2 



######################################     P3

p3 <- data %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", BPA_ALTERN_POINTS,
                      "\nZ-Score: ", BPA_ALTERN_EscoreZ, sep="")) %>%
  
  ggplot(aes(x = AGE, y = BPA_ALTERN_EscoreZ, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresBPA) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score BPA Focused Attention", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
  

#p3

pp3 <-  ggplotly(p3, tooltip="text")



pp3
NA
NA
NA
NA


library(tibble)
library(readxl)
library(dplyr)
library(gtExtras)
library(ggplot2)
library(plotly)
library(viridis)
library(hrbrthemes)

setwd("C:/Users/felip/Desktop/R/3_analise")

data <- readxl::read_xlsx ("BPAs_FDTs_ RAVLTs_EscoreZ.xlsx", sheet = 2)

data




#######################     FDTs ANALYSIS



p4 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, FDT_READING_TIME , FDT_READING_TIME_Z  )

p5 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, FDT_COUNTING_TIME , FDT_COUNTING_TIME_Z  )

p6 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, FDT_CHOOSING_TIME , FDT_CHOOSING_TIME_Z )

p7 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, FDT_CHANGING_TIME , FDT_CHANGING_TIME_Z )

p8 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, FDT_INHIBITION , FDT_INHIBITION_Z )

p9 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, FDT_FLEXIBILITY , FDT_FLEXIBILITY_Z )




########################  P4


coresFDT <- c("#f1948a", "#abebc6")



p4 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", FDT_READING_TIME,
                      "\nZ-Score: ", FDT_READING_TIME_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = FDT_READING_TIME_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresFDT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score FDT Reading Time", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p4

pp4 <- ggplotly(p4, tooltip="text") 


pp4

#######################   P5

p5 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", FDT_COUNTING_TIME,
                      "\nZ-Score: ", FDT_COUNTING_TIME_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = FDT_COUNTING_TIME_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresFDT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score FDT Counting Time", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p5

pp5 <- ggplotly(p5, tooltip="text") 


pp5


#######################   P6


p6 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", FDT_CHOOSING_TIME,
                      "\nZ-Score: ", FDT_CHOOSING_TIME_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = FDT_CHOOSING_TIME_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresFDT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score FDT Chossing Time", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p6

pp6 <- ggplotly(p6, tooltip="text") 


pp6


#######################   P7


p7<- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", FDT_CHANGING_TIME,
                      "\nZ-Score: ", FDT_CHANGING_TIME_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = FDT_CHANGING_TIME_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresFDT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score FDT Changing Time", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p7

pp7 <- ggplotly(p7, tooltip="text") 


pp7



#######################   P8


p8<- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", FDT_INHIBITION,
                      "\nZ-Score: ", FDT_INHIBITION_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = FDT_INHIBITION_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresFDT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score FDT Inbition", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p8

pp8 <- ggplotly(p8, tooltip="text") 


pp8


#######################   P9

p9<- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", FDT_FLEXIBILITY,
                      "\nZ-Score: ", FDT_FLEXIBILITY_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = FDT_FLEXIBILITY_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresFDT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score FDT Flexibility", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p9

pp9 <- ggplotly(p9, tooltip="text") 


pp9
library(tibble)
library(readxl)
library(dplyr)
library(gtExtras)
library(ggplot2)
library(plotly)
library(viridis)
library(hrbrthemes)

setwd("C:/Users/felip/Desktop/R/3_analise")

data <- readxl::read_xlsx ("BPAs_FDTs_ RAVLTs_EscoreZ.xlsx", sheet = 3)

data


#######################     RAVLTs ANALYSIS



p10 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_A1 , RAVLT_A1_Z  )

p11 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_A2 , RAVLT_A2_Z  )

p12 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_A3 , RAVLT_A3_Z )

p13 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_A4 , RAVLT_A4_Z )

p14 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_A5 , RAVLT_A5_Z )

p15 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_B1 , RAVLT_B1_Z )

p16 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_A6 , RAVLT_A6_Z )

p17 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_A7 , RAVLT_A7_Z )

p18 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_TOTALSCORE , RAVLT_TOTALSCORE_Z )

p19 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_REC , RAVLT_REC_Z )

p20 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_RETENTION , RAVLT_RETENTION_Z )

p21 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_PROAT_INTERFERENCE , RAVLT_PROAT_INTERFERENCE_Z )

p22 <- data %>%  select(ID,EDU_LEVEL ,GROUP ,AGE, RAVLT_RETRO_INTERFERENCE , RAVLT_RETRO_INTERFERENCE_Z )


########################  P10


coresRAVLT<- c("#e59866", "#b2babb")



p10 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_A1,
                      "\nZ-Score: ", RAVLT_A1_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_A1_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT A1", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p10

pp10 <- ggplotly(p10, tooltip="text") 


pp10

########################  P11


p11 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_A2,
                      "\nZ-Score: ", RAVLT_A2_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_A2_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT A2", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p11

pp11 <- ggplotly(p11, tooltip="text") 


pp11



########################  P12


p12 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_A3,
                      "\nZ-Score: ", RAVLT_A3_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_A3_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT A3", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p12

pp12 <- ggplotly(p12, tooltip="text") 


pp12


########################  P13


p13 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_A4,
                      "\nZ-Score: ", RAVLT_A4_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_A4_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT A4", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p13

pp13 <- ggplotly(p13, tooltip="text") 


pp13


########################  P14


p14 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_A5,
                      "\nZ-Score: ", RAVLT_A5_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_A5_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT A4", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p14

pp14 <- ggplotly(p14, tooltip="text") 


pp14


########################  P15


p15 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_B1,
                      "\nZ-Score: ", RAVLT_B1_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_B1_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT B1", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p15

pp15 <- ggplotly(p15, tooltip="text") 


pp15



########################  P16


p16 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_A6,
                      "\nZ-Score: ", RAVLT_A6_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_A6_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT A6", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p16

pp16 <- ggplotly(p16, tooltip="text") 


pp16



########################  P17

p17 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_A7,
                      "\nZ-Score: ", RAVLT_A7_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_A7_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT A7", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p17

pp17 <- ggplotly(p17, tooltip="text") 


pp17

########################  P18

p18 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_TOTALSCORE,
                      "\nZ-Score: ", RAVLT_TOTALSCORE_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_TOTALSCORE_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT Total Score", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p18

pp18 <- ggplotly(p18, tooltip="text") 


pp18



########################  P19

p19 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_TOTALSCORE,
                      "\nZ-Score: ", RAVLT_TOTALSCORE_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_TOTALSCORE_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT Total Score", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p19

pp19 <- ggplotly(p19, tooltip="text") 


pp19


########################  P20

p20 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_RETENTION,
                      "\nZ-Score: ", RAVLT_RETENTION_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_RETENTION_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT Retention", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p20

pp20 <- ggplotly(p20, tooltip="text") 


pp20


########################  P21

p21 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_PROAT_INTERFERENCE,
                      "\nZ-Score: ", RAVLT_PROAT_INTERFERENCE_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_PROAT_INTERFERENCE_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT Proative Interference", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p21

pp21 <- ggplotly(p21, tooltip="text") 


pp21


########################  P22

p22 <- data %>% 
  arrange(ID) %>% 
  mutate(text = paste("Identification: ", ID , "\nAge: ", AGE , 
                      "\nPoints: ", RAVLT_RETRO_INTERFERENCE,
                      "\nZ-Score: ", RAVLT_RETRO_INTERFERENCE_Z, sep="")) %>%
  ggplot(aes(x = AGE, y = RAVLT_RETRO_INTERFERENCE_Z, fill= GROUP, stroke = 0,
             size = AGE, shape = EDU_LEVEL , text = text)) +
  geom_point(alpha = 0.7) +
  scale_fill_manual(values = coresRAVLT) +
  scale_size(range = c(2, 5)) +
  scale_x_continuous(name = "Age", limits = c(10, 52), breaks = seq(10, 50, by = 10)) +
  scale_y_continuous(name = "Z Score", limits = c(-3, 3), breaks = seq(-3, 3)) +
  geom_hline(yintercept = -3:3, color = "black", alpha = 0.1) + 
  geom_hline(yintercept = 0, color = "red", alpha = 0.3, linetype = "") +
  labs(y = "Y", title = "Z Score RAVLT Retroative Interference", shape= "", size = "") +
  theme_classic() +
  
    theme(
      text = element_text(family = "Arial Narrow", size = 11.5),
    plot.title = element_text(size = 12, face = "bold"),
    plot.subtitle = element_text(size = 12),
    strip.text = element_text(size = 12),
    plot.caption = element_text(size = 9, face = "italic"),
    axis.title = element_text(size = 10),
    legend.position = "",
    legend.text = element_text(size = 5)
    )
    

#p22

pp22 <- ggplotly(p22, tooltip="text") 


pp22
NA
NA
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciB3YXJuaW5nID0gRiwgbWVzc2FnZSA9IEYgfQ0KbGlicmFyeSh0aWJibGUpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGd0RXh0cmFzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHZpcmlkaXMpDQpsaWJyYXJ5KGhyYnJ0aGVtZXMpDQoNCnNldHdkKCJDOi9Vc2Vycy9mZWxpcC9EZXNrdG9wL1IvM19hbmFsaXNlIikNCg0KZGF0YSA8LSByZWFkeGw6OnJlYWRfeGxzeCAoIkJQQXNfRkRUc18gUkFWTFRzX0VzY29yZVoueGxzeCIsIHNoZWV0ID0gMSkNCg0KZGF0YQ0KDQojZ3RfcGx0X3N1bW1hcnkoZGF0YSkNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgICBCUEEgQU5BTFlTSVMNCg0KDQpzdW1tYXJ5KGRhdGEpDQoNCiN1dGlsczo6VmlldyhkYXRhKQ0KDQoNCnAxIDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsRURVX0xFVkVMICwgQUdFLCBCUEFfQ09OQ19QT0lOVFMgLCBCUEFfQ09OQ19Fc2NvcmVaICApDQoNCnAyIDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsRURVX0xFVkVMLCBBR0UsIEJQQV9ESVZJRF9QT0lOVFMgLCBCUEFfRElWSURfRXNjb3JlWiAgKQ0KDQpwMyA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEVEVV9MRVZFTCAsQUdFLCBCUEFfQUxURVJOX1BPSU5UUyAsIEJQQV9BTFRFUk5fRXNjb3JlWiApDQoNCg0KDQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgICBQMQ0KDQoNCmNvcmVzQlBBIDwtIGMoIiMxYTI4ODciLCAiIzc5OWRlNCIpDQoNCg0KDQpwMSA8LSBkYXRhICU+JSANCiAgYXJyYW5nZShJRCkgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgQlBBX0NPTkNfUE9JTlRTLA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIEJQQV9DT05DX0VzY29yZVosIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBCUEFfQ09OQ19Fc2NvcmVaLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzQlBBKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDUpKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkFnZSIsIGxpbWl0cyA9IGMoMTAsIDUyKSwgYnJlYWtzID0gc2VxKDEwLCA1MCwgYnkgPSAxMCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiWiBTY29yZSIsIGxpbWl0cyA9IGMoLTMsIDMpLCBicmVha3MgPSBzZXEoLTMsIDMpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC0zOjMsIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjEpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIsIGFscGhhID0gMC4zLCBsaW5ldHlwZSA9ICIiKSArDQogIGxhYnMoeSA9ICJZIiwgdGl0bGUgPSAiWiBTY29yZSBCUEEgRm9jdXNlZCBBdHRlbnRpb24iLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KI3AxDQoNCnBwMSA8LSBnZ3Bsb3RseShwMSwgdG9vbHRpcD0idGV4dCIpIA0KDQoNCnBwMQ0KDQoNCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgICAgIFAyDQoNCnAyIDwtIGRhdGEgJT4lDQogIGFycmFuZ2UoSUQpICU+JQ0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgQlBBX0RJVklEX1BPSU5UUywNCiAgICAgICAgICAgICAgICAgICAgICAiXG5aLVNjb3JlOiAiLCBCUEFfRElWSURfRXNjb3JlWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IEJQQV9ESVZJRF9Fc2NvcmVaLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzQlBBKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDUpKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkFnZSIsIGxpbWl0cyA9IGMoMTAsIDUyKSwgYnJlYWtzID0gc2VxKDEwLCA1MCwgYnkgPSAxMCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiWiBTY29yZSIsIGxpbWl0cyA9IGMoLTMsIDMpLCBicmVha3MgPSBzZXEoLTMsIDMpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC0zOjMsIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjEpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIsIGFscGhhID0gMC4zLCBsaW5ldHlwZSA9ICIiKSArDQogIGxhYnMoeSA9ICJZIiwgdGl0bGUgPSAiWiBTY29yZSBCUEEgRm9jdXNlZCBBdHRlbnRpb24iLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KDQojcDINCg0KcHAyIDwtIGdncGxvdGx5KHAyLCB0b29sdGlwPSJ0ZXh0IikNCiANCg0KcHAyIA0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICAgIFAzDQoNCnAzIDwtIGRhdGEgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgQlBBX0FMVEVSTl9QT0lOVFMsDQogICAgICAgICAgICAgICAgICAgICAgIlxuWi1TY29yZTogIiwgQlBBX0FMVEVSTl9Fc2NvcmVaLCBzZXA9IiIpKSAlPiUNCiAgDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IEJQQV9BTFRFUk5fRXNjb3JlWiwgZmlsbD0gR1JPVVAsIHN0cm9rZSA9IDAsDQogICAgICAgICAgICAgc2l6ZSA9IEFHRSwgc2hhcGUgPSBFRFVfTEVWRUwgLCB0ZXh0ID0gdGV4dCkpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb3Jlc0JQQSkgKw0KICBzY2FsZV9zaXplKHJhbmdlID0gYygyLCA1KSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJBZ2UiLCBsaW1pdHMgPSBjKDEwLCA1MiksIGJyZWFrcyA9IHNlcSgxMCwgNTAsIGJ5ID0gMTApKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlogU2NvcmUiLCBsaW1pdHMgPSBjKC0zLCAzKSwgYnJlYWtzID0gc2VxKC0zLCAzKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAtMzozLCBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4xKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiLCBhbHBoYSA9IDAuMywgbGluZXR5cGUgPSAiIikgKw0KICBsYWJzKHkgPSAiWSIsIHRpdGxlID0gIlogU2NvcmUgQlBBIEZvY3VzZWQgQXR0ZW50aW9uIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogIA0KDQojcDMNCg0KcHAzIDwtICBnZ3Bsb3RseShwMywgdG9vbHRpcD0idGV4dCIpDQoNCg0KDQpwcDMNCg0KDQoNCg0KYGBgIA0KDQoNCmBgYHtyfQ0KDQoNCmxpYnJhcnkodGliYmxlKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShndEV4dHJhcykNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeSh2aXJpZGlzKQ0KbGlicmFyeShocmJydGhlbWVzKQ0KDQpzZXR3ZCgiQzovVXNlcnMvZmVsaXAvRGVza3RvcC9SLzNfYW5hbGlzZSIpDQoNCmRhdGEgPC0gcmVhZHhsOjpyZWFkX3hsc3ggKCJCUEFzX0ZEVHNfIFJBVkxUc19Fc2NvcmVaLnhsc3giLCBzaGVldCA9IDIpDQoNCmRhdGENCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICAgIEZEVHMgQU5BTFlTSVMNCg0KDQoNCnA0IDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsQUdFLCBGRFRfUkVBRElOR19USU1FICwgRkRUX1JFQURJTkdfVElNRV9aICApDQoNCnA1IDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsQUdFLCBGRFRfQ09VTlRJTkdfVElNRSAsIEZEVF9DT1VOVElOR19USU1FX1ogICkNCg0KcDYgPC0gZGF0YSAlPiUgIHNlbGVjdChJRCxFRFVfTEVWRUwgLEdST1VQICxBR0UsIEZEVF9DSE9PU0lOR19USU1FICwgRkRUX0NIT09TSU5HX1RJTUVfWiApDQoNCnA3IDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsQUdFLCBGRFRfQ0hBTkdJTkdfVElNRSAsIEZEVF9DSEFOR0lOR19USU1FX1ogKQ0KDQpwOCA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgRkRUX0lOSElCSVRJT04gLCBGRFRfSU5ISUJJVElPTl9aICkNCg0KcDkgPC0gZGF0YSAlPiUgIHNlbGVjdChJRCxFRFVfTEVWRUwgLEdST1VQICxBR0UsIEZEVF9GTEVYSUJJTElUWSAsIEZEVF9GTEVYSUJJTElUWV9aICkNCg0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQNA0KDQoNCmNvcmVzRkRUIDwtIGMoIiNmMTk0OGEiLCAiI2FiZWJjNiIpDQoNCg0KDQpwNCA8LSBkYXRhICU+JSANCiAgYXJyYW5nZShJRCkgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgRkRUX1JFQURJTkdfVElNRSwNCiAgICAgICAgICAgICAgICAgICAgICAiXG5aLVNjb3JlOiAiLCBGRFRfUkVBRElOR19USU1FX1osIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBGRFRfUkVBRElOR19USU1FX1osIGZpbGw9IEdST1VQLCBzdHJva2UgPSAwLA0KICAgICAgICAgICAgIHNpemUgPSBBR0UsIHNoYXBlID0gRURVX0xFVkVMICwgdGV4dCA9IHRleHQpKSArDQogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29yZXNGRFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIEZEVCBSZWFkaW5nIFRpbWUiLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KI3A0DQoNCnBwNCA8LSBnZ3Bsb3RseShwNCwgdG9vbHRpcD0idGV4dCIpIA0KDQoNCnBwNA0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgIFA1DQoNCnA1IDwtIGRhdGEgJT4lIA0KICBhcnJhbmdlKElEKSAlPiUgDQogIG11dGF0ZSh0ZXh0ID0gcGFzdGUoIklkZW50aWZpY2F0aW9uOiAiLCBJRCAsICJcbkFnZTogIiwgQUdFICwgDQogICAgICAgICAgICAgICAgICAgICAgIlxuUG9pbnRzOiAiLCBGRFRfQ09VTlRJTkdfVElNRSwNCiAgICAgICAgICAgICAgICAgICAgICAiXG5aLVNjb3JlOiAiLCBGRFRfQ09VTlRJTkdfVElNRV9aLCBzZXA9IiIpKSAlPiUNCiAgZ2dwbG90KGFlcyh4ID0gQUdFLCB5ID0gRkRUX0NPVU5USU5HX1RJTUVfWiwgZmlsbD0gR1JPVVAsIHN0cm9rZSA9IDAsDQogICAgICAgICAgICAgc2l6ZSA9IEFHRSwgc2hhcGUgPSBFRFVfTEVWRUwgLCB0ZXh0ID0gdGV4dCkpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb3Jlc0ZEVCkgKw0KICBzY2FsZV9zaXplKHJhbmdlID0gYygyLCA1KSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJBZ2UiLCBsaW1pdHMgPSBjKDEwLCA1MiksIGJyZWFrcyA9IHNlcSgxMCwgNTAsIGJ5ID0gMTApKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlogU2NvcmUiLCBsaW1pdHMgPSBjKC0zLCAzKSwgYnJlYWtzID0gc2VxKC0zLCAzKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAtMzozLCBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4xKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiLCBhbHBoYSA9IDAuMywgbGluZXR5cGUgPSAiIikgKw0KICBsYWJzKHkgPSAiWSIsIHRpdGxlID0gIlogU2NvcmUgRkRUIENvdW50aW5nIFRpbWUiLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KI3A1DQoNCnBwNSA8LSBnZ3Bsb3RseShwNSwgdG9vbHRpcD0idGV4dCIpIA0KDQoNCnBwNQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgUDYNCg0KDQpwNiA8LSBkYXRhICU+JSANCiAgYXJyYW5nZShJRCkgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgRkRUX0NIT09TSU5HX1RJTUUsDQogICAgICAgICAgICAgICAgICAgICAgIlxuWi1TY29yZTogIiwgRkRUX0NIT09TSU5HX1RJTUVfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IEZEVF9DSE9PU0lOR19USU1FX1osIGZpbGw9IEdST1VQLCBzdHJva2UgPSAwLA0KICAgICAgICAgICAgIHNpemUgPSBBR0UsIHNoYXBlID0gRURVX0xFVkVMICwgdGV4dCA9IHRleHQpKSArDQogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29yZXNGRFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIEZEVCBDaG9zc2luZyBUaW1lIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwNg0KDQpwcDYgPC0gZ2dwbG90bHkocDYsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDYNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgIFA3DQoNCg0KcDc8LSBkYXRhICU+JSANCiAgYXJyYW5nZShJRCkgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgRkRUX0NIQU5HSU5HX1RJTUUsDQogICAgICAgICAgICAgICAgICAgICAgIlxuWi1TY29yZTogIiwgRkRUX0NIQU5HSU5HX1RJTUVfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IEZEVF9DSEFOR0lOR19USU1FX1osIGZpbGw9IEdST1VQLCBzdHJva2UgPSAwLA0KICAgICAgICAgICAgIHNpemUgPSBBR0UsIHNoYXBlID0gRURVX0xFVkVMICwgdGV4dCA9IHRleHQpKSArDQogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29yZXNGRFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIEZEVCBDaGFuZ2luZyBUaW1lIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwNw0KDQpwcDcgPC0gZ2dwbG90bHkocDcsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDcNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgUDgNCg0KDQpwODwtIGRhdGEgJT4lIA0KICBhcnJhbmdlKElEKSAlPiUgDQogIG11dGF0ZSh0ZXh0ID0gcGFzdGUoIklkZW50aWZpY2F0aW9uOiAiLCBJRCAsICJcbkFnZTogIiwgQUdFICwgDQogICAgICAgICAgICAgICAgICAgICAgIlxuUG9pbnRzOiAiLCBGRFRfSU5ISUJJVElPTiwNCiAgICAgICAgICAgICAgICAgICAgICAiXG5aLVNjb3JlOiAiLCBGRFRfSU5ISUJJVElPTl9aLCBzZXA9IiIpKSAlPiUNCiAgZ2dwbG90KGFlcyh4ID0gQUdFLCB5ID0gRkRUX0lOSElCSVRJT05fWiwgZmlsbD0gR1JPVVAsIHN0cm9rZSA9IDAsDQogICAgICAgICAgICAgc2l6ZSA9IEFHRSwgc2hhcGUgPSBFRFVfTEVWRUwgLCB0ZXh0ID0gdGV4dCkpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb3Jlc0ZEVCkgKw0KICBzY2FsZV9zaXplKHJhbmdlID0gYygyLCA1KSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJBZ2UiLCBsaW1pdHMgPSBjKDEwLCA1MiksIGJyZWFrcyA9IHNlcSgxMCwgNTAsIGJ5ID0gMTApKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlogU2NvcmUiLCBsaW1pdHMgPSBjKC0zLCAzKSwgYnJlYWtzID0gc2VxKC0zLCAzKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAtMzozLCBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4xKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiLCBhbHBoYSA9IDAuMywgbGluZXR5cGUgPSAiIikgKw0KICBsYWJzKHkgPSAiWSIsIHRpdGxlID0gIlogU2NvcmUgRkRUIEluYml0aW9uIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwOA0KDQpwcDggPC0gZ2dwbG90bHkocDgsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDgNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgIFA5DQoNCnA5PC0gZGF0YSAlPiUgDQogIGFycmFuZ2UoSUQpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZSgiSWRlbnRpZmljYXRpb246ICIsIElEICwgIlxuQWdlOiAiLCBBR0UgLCANCiAgICAgICAgICAgICAgICAgICAgICAiXG5Qb2ludHM6ICIsIEZEVF9GTEVYSUJJTElUWSwNCiAgICAgICAgICAgICAgICAgICAgICAiXG5aLVNjb3JlOiAiLCBGRFRfRkxFWElCSUxJVFlfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IEZEVF9GTEVYSUJJTElUWV9aLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzRkRUKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDUpKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkFnZSIsIGxpbWl0cyA9IGMoMTAsIDUyKSwgYnJlYWtzID0gc2VxKDEwLCA1MCwgYnkgPSAxMCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiWiBTY29yZSIsIGxpbWl0cyA9IGMoLTMsIDMpLCBicmVha3MgPSBzZXEoLTMsIDMpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC0zOjMsIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjEpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIsIGFscGhhID0gMC4zLCBsaW5ldHlwZSA9ICIiKSArDQogIGxhYnMoeSA9ICJZIiwgdGl0bGUgPSAiWiBTY29yZSBGRFQgRmxleGliaWxpdHkiLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KI3A5DQoNCnBwOSA8LSBnZ3Bsb3RseShwOSwgdG9vbHRpcD0idGV4dCIpIA0KDQoNCnBwOQ0KYGBgIA0KDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWJibGUpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGd0RXh0cmFzKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHZpcmlkaXMpDQpsaWJyYXJ5KGhyYnJ0aGVtZXMpDQoNCnNldHdkKCJDOi9Vc2Vycy9mZWxpcC9EZXNrdG9wL1IvM19hbmFsaXNlIikNCg0KZGF0YSA8LSByZWFkeGw6OnJlYWRfeGxzeCAoIkJQQXNfRkRUc18gUkFWTFRzX0VzY29yZVoueGxzeCIsIHNoZWV0ID0gMykNCg0KZGF0YQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgICBSQVZMVHMgQU5BTFlTSVMNCg0KDQoNCnAxMCA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgUkFWTFRfQTEgLCBSQVZMVF9BMV9aICApDQoNCnAxMSA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgUkFWTFRfQTIgLCBSQVZMVF9BMl9aICApDQoNCnAxMiA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgUkFWTFRfQTMgLCBSQVZMVF9BM19aICkNCg0KcDEzIDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsQUdFLCBSQVZMVF9BNCAsIFJBVkxUX0E0X1ogKQ0KDQpwMTQgPC0gZGF0YSAlPiUgIHNlbGVjdChJRCxFRFVfTEVWRUwgLEdST1VQICxBR0UsIFJBVkxUX0E1ICwgUkFWTFRfQTVfWiApDQoNCnAxNSA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgUkFWTFRfQjEgLCBSQVZMVF9CMV9aICkNCg0KcDE2IDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsQUdFLCBSQVZMVF9BNiAsIFJBVkxUX0E2X1ogKQ0KDQpwMTcgPC0gZGF0YSAlPiUgIHNlbGVjdChJRCxFRFVfTEVWRUwgLEdST1VQICxBR0UsIFJBVkxUX0E3ICwgUkFWTFRfQTdfWiApDQoNCnAxOCA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgUkFWTFRfVE9UQUxTQ09SRSAsIFJBVkxUX1RPVEFMU0NPUkVfWiApDQoNCnAxOSA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgUkFWTFRfUkVDICwgUkFWTFRfUkVDX1ogKQ0KDQpwMjAgPC0gZGF0YSAlPiUgIHNlbGVjdChJRCxFRFVfTEVWRUwgLEdST1VQICxBR0UsIFJBVkxUX1JFVEVOVElPTiAsIFJBVkxUX1JFVEVOVElPTl9aICkNCg0KcDIxIDwtIGRhdGEgJT4lICBzZWxlY3QoSUQsRURVX0xFVkVMICxHUk9VUCAsQUdFLCBSQVZMVF9QUk9BVF9JTlRFUkZFUkVOQ0UgLCBSQVZMVF9QUk9BVF9JTlRFUkZFUkVOQ0VfWiApDQoNCnAyMiA8LSBkYXRhICU+JSAgc2VsZWN0KElELEVEVV9MRVZFTCAsR1JPVVAgLEFHRSwgUkFWTFRfUkVUUk9fSU5URVJGRVJFTkNFICwgUkFWTFRfUkVUUk9fSU5URVJGRVJFTkNFX1ogKQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgUDEwDQoNCg0KY29yZXNSQVZMVDwtIGMoIiNlNTk4NjYiLCAiI2IyYmFiYiIpDQoNCg0KDQpwMTAgPC0gZGF0YSAlPiUgDQogIGFycmFuZ2UoSUQpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZSgiSWRlbnRpZmljYXRpb246ICIsIElEICwgIlxuQWdlOiAiLCBBR0UgLCANCiAgICAgICAgICAgICAgICAgICAgICAiXG5Qb2ludHM6ICIsIFJBVkxUX0ExLA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX0ExX1osIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBSQVZMVF9BMV9aLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzUkFWTFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIFJBVkxUIEExIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwMTANCg0KcHAxMCA8LSBnZ3Bsb3RseShwMTAsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDEwDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgUDExDQoNCg0KcDExIDwtIGRhdGEgJT4lIA0KICBhcnJhbmdlKElEKSAlPiUgDQogIG11dGF0ZSh0ZXh0ID0gcGFzdGUoIklkZW50aWZpY2F0aW9uOiAiLCBJRCAsICJcbkFnZTogIiwgQUdFICwgDQogICAgICAgICAgICAgICAgICAgICAgIlxuUG9pbnRzOiAiLCBSQVZMVF9BMiwNCiAgICAgICAgICAgICAgICAgICAgICAiXG5aLVNjb3JlOiAiLCBSQVZMVF9BMl9aLCBzZXA9IiIpKSAlPiUNCiAgZ2dwbG90KGFlcyh4ID0gQUdFLCB5ID0gUkFWTFRfQTJfWiwgZmlsbD0gR1JPVVAsIHN0cm9rZSA9IDAsDQogICAgICAgICAgICAgc2l6ZSA9IEFHRSwgc2hhcGUgPSBFRFVfTEVWRUwgLCB0ZXh0ID0gdGV4dCkpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb3Jlc1JBVkxUKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDUpKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkFnZSIsIGxpbWl0cyA9IGMoMTAsIDUyKSwgYnJlYWtzID0gc2VxKDEwLCA1MCwgYnkgPSAxMCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiWiBTY29yZSIsIGxpbWl0cyA9IGMoLTMsIDMpLCBicmVha3MgPSBzZXEoLTMsIDMpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC0zOjMsIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjEpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIsIGFscGhhID0gMC4zLCBsaW5ldHlwZSA9ICIiKSArDQogIGxhYnMoeSA9ICJZIiwgdGl0bGUgPSAiWiBTY29yZSBSQVZMVCBBMiIsIHNoYXBlPSAiIiwgc2l6ZSA9ICIiKSArDQogIHRoZW1lX2NsYXNzaWMoKSArDQogIA0KICAgIHRoZW1lKA0KICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiQXJpYWwgTmFycm93Iiwgc2l6ZSA9IDExLjUpLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBmYWNlID0gImJvbGQiKSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChzaXplID0gOSwgZmFjZSA9ICJpdGFsaWMiKSwNCiAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gIiIsDQogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDUpDQogICAgKQ0KICAgIA0KDQojcDExDQoNCnBwMTEgPC0gZ2dwbG90bHkocDExLCB0b29sdGlwPSJ0ZXh0IikgDQoNCg0KcHAxMQ0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQMTINCg0KDQpwMTIgPC0gZGF0YSAlPiUgDQogIGFycmFuZ2UoSUQpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZSgiSWRlbnRpZmljYXRpb246ICIsIElEICwgIlxuQWdlOiAiLCBBR0UgLCANCiAgICAgICAgICAgICAgICAgICAgICAiXG5Qb2ludHM6ICIsIFJBVkxUX0EzLA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX0EzX1osIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBSQVZMVF9BM19aLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzUkFWTFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIFJBVkxUIEEzIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwMTINCg0KcHAxMiA8LSBnZ3Bsb3RseShwMTIsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDEyDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQMTMNCg0KDQpwMTMgPC0gZGF0YSAlPiUgDQogIGFycmFuZ2UoSUQpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZSgiSWRlbnRpZmljYXRpb246ICIsIElEICwgIlxuQWdlOiAiLCBBR0UgLCANCiAgICAgICAgICAgICAgICAgICAgICAiXG5Qb2ludHM6ICIsIFJBVkxUX0E0LA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX0E0X1osIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBSQVZMVF9BNF9aLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzUkFWTFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIFJBVkxUIEE0Iiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwMTMNCg0KcHAxMyA8LSBnZ3Bsb3RseShwMTMsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDEzDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQMTQNCg0KDQpwMTQgPC0gZGF0YSAlPiUgDQogIGFycmFuZ2UoSUQpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZSgiSWRlbnRpZmljYXRpb246ICIsIElEICwgIlxuQWdlOiAiLCBBR0UgLCANCiAgICAgICAgICAgICAgICAgICAgICAiXG5Qb2ludHM6ICIsIFJBVkxUX0E1LA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX0E1X1osIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBSQVZMVF9BNV9aLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzUkFWTFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIFJBVkxUIEE0Iiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwMTQNCg0KcHAxNCA8LSBnZ3Bsb3RseShwMTQsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDE0DQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQMTUNCg0KDQpwMTUgPC0gZGF0YSAlPiUgDQogIGFycmFuZ2UoSUQpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZSgiSWRlbnRpZmljYXRpb246ICIsIElEICwgIlxuQWdlOiAiLCBBR0UgLCANCiAgICAgICAgICAgICAgICAgICAgICAiXG5Qb2ludHM6ICIsIFJBVkxUX0IxLA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX0IxX1osIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBSQVZMVF9CMV9aLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzUkFWTFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIFJBVkxUIEIxIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwMTUNCg0KcHAxNSA8LSBnZ3Bsb3RseShwMTUsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDE1DQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIFAxNg0KDQoNCnAxNiA8LSBkYXRhICU+JSANCiAgYXJyYW5nZShJRCkgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgUkFWTFRfQTYsDQogICAgICAgICAgICAgICAgICAgICAgIlxuWi1TY29yZTogIiwgUkFWTFRfQTZfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IFJBVkxUX0E2X1osIGZpbGw9IEdST1VQLCBzdHJva2UgPSAwLA0KICAgICAgICAgICAgIHNpemUgPSBBR0UsIHNoYXBlID0gRURVX0xFVkVMICwgdGV4dCA9IHRleHQpKSArDQogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29yZXNSQVZMVCkgKw0KICBzY2FsZV9zaXplKHJhbmdlID0gYygyLCA1KSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJBZ2UiLCBsaW1pdHMgPSBjKDEwLCA1MiksIGJyZWFrcyA9IHNlcSgxMCwgNTAsIGJ5ID0gMTApKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlogU2NvcmUiLCBsaW1pdHMgPSBjKC0zLCAzKSwgYnJlYWtzID0gc2VxKC0zLCAzKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAtMzozLCBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4xKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiLCBhbHBoYSA9IDAuMywgbGluZXR5cGUgPSAiIikgKw0KICBsYWJzKHkgPSAiWSIsIHRpdGxlID0gIlogU2NvcmUgUkFWTFQgQTYiLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KI3AxNg0KDQpwcDE2IDwtIGdncGxvdGx5KHAxNiwgdG9vbHRpcD0idGV4dCIpIA0KDQoNCnBwMTYNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgUDE3DQoNCnAxNyA8LSBkYXRhICU+JSANCiAgYXJyYW5nZShJRCkgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgUkFWTFRfQTcsDQogICAgICAgICAgICAgICAgICAgICAgIlxuWi1TY29yZTogIiwgUkFWTFRfQTdfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IFJBVkxUX0E3X1osIGZpbGw9IEdST1VQLCBzdHJva2UgPSAwLA0KICAgICAgICAgICAgIHNpemUgPSBBR0UsIHNoYXBlID0gRURVX0xFVkVMICwgdGV4dCA9IHRleHQpKSArDQogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29yZXNSQVZMVCkgKw0KICBzY2FsZV9zaXplKHJhbmdlID0gYygyLCA1KSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJBZ2UiLCBsaW1pdHMgPSBjKDEwLCA1MiksIGJyZWFrcyA9IHNlcSgxMCwgNTAsIGJ5ID0gMTApKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlogU2NvcmUiLCBsaW1pdHMgPSBjKC0zLCAzKSwgYnJlYWtzID0gc2VxKC0zLCAzKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAtMzozLCBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4xKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiLCBhbHBoYSA9IDAuMywgbGluZXR5cGUgPSAiIikgKw0KICBsYWJzKHkgPSAiWSIsIHRpdGxlID0gIlogU2NvcmUgUkFWTFQgQTciLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KI3AxNw0KDQpwcDE3IDwtIGdncGxvdGx5KHAxNywgdG9vbHRpcD0idGV4dCIpIA0KDQoNCnBwMTcNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQMTgNCg0KcDE4IDwtIGRhdGEgJT4lIA0KICBhcnJhbmdlKElEKSAlPiUgDQogIG11dGF0ZSh0ZXh0ID0gcGFzdGUoIklkZW50aWZpY2F0aW9uOiAiLCBJRCAsICJcbkFnZTogIiwgQUdFICwgDQogICAgICAgICAgICAgICAgICAgICAgIlxuUG9pbnRzOiAiLCBSQVZMVF9UT1RBTFNDT1JFLA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX1RPVEFMU0NPUkVfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IFJBVkxUX1RPVEFMU0NPUkVfWiwgZmlsbD0gR1JPVVAsIHN0cm9rZSA9IDAsDQogICAgICAgICAgICAgc2l6ZSA9IEFHRSwgc2hhcGUgPSBFRFVfTEVWRUwgLCB0ZXh0ID0gdGV4dCkpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb3Jlc1JBVkxUKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDUpKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkFnZSIsIGxpbWl0cyA9IGMoMTAsIDUyKSwgYnJlYWtzID0gc2VxKDEwLCA1MCwgYnkgPSAxMCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiWiBTY29yZSIsIGxpbWl0cyA9IGMoLTMsIDMpLCBicmVha3MgPSBzZXEoLTMsIDMpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC0zOjMsIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjEpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIsIGFscGhhID0gMC4zLCBsaW5ldHlwZSA9ICIiKSArDQogIGxhYnMoeSA9ICJZIiwgdGl0bGUgPSAiWiBTY29yZSBSQVZMVCBUb3RhbCBTY29yZSIsIHNoYXBlPSAiIiwgc2l6ZSA9ICIiKSArDQogIHRoZW1lX2NsYXNzaWMoKSArDQogIA0KICAgIHRoZW1lKA0KICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiQXJpYWwgTmFycm93Iiwgc2l6ZSA9IDExLjUpLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBmYWNlID0gImJvbGQiKSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChzaXplID0gOSwgZmFjZSA9ICJpdGFsaWMiKSwNCiAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gIiIsDQogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDUpDQogICAgKQ0KICAgIA0KDQojcDE4DQoNCnBwMTggPC0gZ2dwbG90bHkocDE4LCB0b29sdGlwPSJ0ZXh0IikgDQoNCg0KcHAxOA0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQMTkNCg0KcDE5IDwtIGRhdGEgJT4lIA0KICBhcnJhbmdlKElEKSAlPiUgDQogIG11dGF0ZSh0ZXh0ID0gcGFzdGUoIklkZW50aWZpY2F0aW9uOiAiLCBJRCAsICJcbkFnZTogIiwgQUdFICwgDQogICAgICAgICAgICAgICAgICAgICAgIlxuUG9pbnRzOiAiLCBSQVZMVF9UT1RBTFNDT1JFLA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX1RPVEFMU0NPUkVfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IFJBVkxUX1RPVEFMU0NPUkVfWiwgZmlsbD0gR1JPVVAsIHN0cm9rZSA9IDAsDQogICAgICAgICAgICAgc2l6ZSA9IEFHRSwgc2hhcGUgPSBFRFVfTEVWRUwgLCB0ZXh0ID0gdGV4dCkpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb3Jlc1JBVkxUKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDUpKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkFnZSIsIGxpbWl0cyA9IGMoMTAsIDUyKSwgYnJlYWtzID0gc2VxKDEwLCA1MCwgYnkgPSAxMCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiWiBTY29yZSIsIGxpbWl0cyA9IGMoLTMsIDMpLCBicmVha3MgPSBzZXEoLTMsIDMpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC0zOjMsIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjEpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIsIGFscGhhID0gMC4zLCBsaW5ldHlwZSA9ICIiKSArDQogIGxhYnMoeSA9ICJZIiwgdGl0bGUgPSAiWiBTY29yZSBSQVZMVCBUb3RhbCBTY29yZSIsIHNoYXBlPSAiIiwgc2l6ZSA9ICIiKSArDQogIHRoZW1lX2NsYXNzaWMoKSArDQogIA0KICAgIHRoZW1lKA0KICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChmYW1pbHkgPSAiQXJpYWwgTmFycm93Iiwgc2l6ZSA9IDExLjUpLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLCBmYWNlID0gImJvbGQiKSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgc3RyaXAudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChzaXplID0gOSwgZmFjZSA9ICJpdGFsaWMiKSwNCiAgICBheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCksDQogICAgbGVnZW5kLnBvc2l0aW9uID0gIiIsDQogICAgbGVnZW5kLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDUpDQogICAgKQ0KICAgIA0KDQojcDE5DQoNCnBwMTkgPC0gZ2dwbG90bHkocDE5LCB0b29sdGlwPSJ0ZXh0IikgDQoNCg0KcHAxOQ0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgUDIwDQoNCnAyMCA8LSBkYXRhICU+JSANCiAgYXJyYW5nZShJRCkgJT4lIA0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCJJZGVudGlmaWNhdGlvbjogIiwgSUQgLCAiXG5BZ2U6ICIsIEFHRSAsIA0KICAgICAgICAgICAgICAgICAgICAgICJcblBvaW50czogIiwgUkFWTFRfUkVURU5USU9OLA0KICAgICAgICAgICAgICAgICAgICAgICJcblotU2NvcmU6ICIsIFJBVkxUX1JFVEVOVElPTl9aLCBzZXA9IiIpKSAlPiUNCiAgZ2dwbG90KGFlcyh4ID0gQUdFLCB5ID0gUkFWTFRfUkVURU5USU9OX1osIGZpbGw9IEdST1VQLCBzdHJva2UgPSAwLA0KICAgICAgICAgICAgIHNpemUgPSBBR0UsIHNoYXBlID0gRURVX0xFVkVMICwgdGV4dCA9IHRleHQpKSArDQogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjcpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gY29yZXNSQVZMVCkgKw0KICBzY2FsZV9zaXplKHJhbmdlID0gYygyLCA1KSkgKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJBZ2UiLCBsaW1pdHMgPSBjKDEwLCA1MiksIGJyZWFrcyA9IHNlcSgxMCwgNTAsIGJ5ID0gMTApKSArDQogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlogU2NvcmUiLCBsaW1pdHMgPSBjKC0zLCAzKSwgYnJlYWtzID0gc2VxKC0zLCAzKSkgKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAtMzozLCBjb2xvciA9ICJibGFjayIsIGFscGhhID0gMC4xKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLCBjb2xvciA9ICJyZWQiLCBhbHBoYSA9IDAuMywgbGluZXR5cGUgPSAiIikgKw0KICBsYWJzKHkgPSAiWSIsIHRpdGxlID0gIlogU2NvcmUgUkFWTFQgUmV0ZW50aW9uIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwMjANCg0KcHAyMCA8LSBnZ3Bsb3RseShwMjAsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDIwDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICBQMjENCg0KcDIxIDwtIGRhdGEgJT4lIA0KICBhcnJhbmdlKElEKSAlPiUgDQogIG11dGF0ZSh0ZXh0ID0gcGFzdGUoIklkZW50aWZpY2F0aW9uOiAiLCBJRCAsICJcbkFnZTogIiwgQUdFICwgDQogICAgICAgICAgICAgICAgICAgICAgIlxuUG9pbnRzOiAiLCBSQVZMVF9QUk9BVF9JTlRFUkZFUkVOQ0UsDQogICAgICAgICAgICAgICAgICAgICAgIlxuWi1TY29yZTogIiwgUkFWTFRfUFJPQVRfSU5URVJGRVJFTkNFX1osIHNlcD0iIikpICU+JQ0KICBnZ3Bsb3QoYWVzKHggPSBBR0UsIHkgPSBSQVZMVF9QUk9BVF9JTlRFUkZFUkVOQ0VfWiwgZmlsbD0gR1JPVVAsIHN0cm9rZSA9IDAsDQogICAgICAgICAgICAgc2l6ZSA9IEFHRSwgc2hhcGUgPSBFRFVfTEVWRUwgLCB0ZXh0ID0gdGV4dCkpICsNCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuNykgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjb3Jlc1JBVkxUKSArDQogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDUpKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0gIkFnZSIsIGxpbWl0cyA9IGMoMTAsIDUyKSwgYnJlYWtzID0gc2VxKDEwLCA1MCwgYnkgPSAxMCkpICsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiWiBTY29yZSIsIGxpbWl0cyA9IGMoLTMsIDMpLCBicmVha3MgPSBzZXEoLTMsIDMpKSArDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IC0zOjMsIGNvbG9yID0gImJsYWNrIiwgYWxwaGEgPSAwLjEpICsgDQogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAsIGNvbG9yID0gInJlZCIsIGFscGhhID0gMC4zLCBsaW5ldHlwZSA9ICIiKSArDQogIGxhYnMoeSA9ICJZIiwgdGl0bGUgPSAiWiBTY29yZSBSQVZMVCBQcm9hdGl2ZSBJbnRlcmZlcmVuY2UiLCBzaGFwZT0gIiIsIHNpemUgPSAiIikgKw0KICB0aGVtZV9jbGFzc2ljKCkgKw0KICANCiAgICB0aGVtZSgNCiAgICAgIHRleHQgPSBlbGVtZW50X3RleHQoZmFtaWx5ID0gIkFyaWFsIE5hcnJvdyIsIHNpemUgPSAxMS41KSwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgZmFjZSA9ICJib2xkIiksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIpLA0KICAgIHN0cmlwLnRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBwbG90LmNhcHRpb24gPSBlbGVtZW50X3RleHQoc2l6ZSA9IDksIGZhY2UgPSAiaXRhbGljIiksDQogICAgYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTApLA0KICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICIiLA0KICAgIGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSA1KQ0KICAgICkNCiAgICANCg0KI3AyMQ0KDQpwcDIxIDwtIGdncGxvdGx5KHAyMSwgdG9vbHRpcD0idGV4dCIpIA0KDQoNCnBwMjENCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIFAyMg0KDQpwMjIgPC0gZGF0YSAlPiUgDQogIGFycmFuZ2UoSUQpICU+JSANCiAgbXV0YXRlKHRleHQgPSBwYXN0ZSgiSWRlbnRpZmljYXRpb246ICIsIElEICwgIlxuQWdlOiAiLCBBR0UgLCANCiAgICAgICAgICAgICAgICAgICAgICAiXG5Qb2ludHM6ICIsIFJBVkxUX1JFVFJPX0lOVEVSRkVSRU5DRSwNCiAgICAgICAgICAgICAgICAgICAgICAiXG5aLVNjb3JlOiAiLCBSQVZMVF9SRVRST19JTlRFUkZFUkVOQ0VfWiwgc2VwPSIiKSkgJT4lDQogIGdncGxvdChhZXMoeCA9IEFHRSwgeSA9IFJBVkxUX1JFVFJPX0lOVEVSRkVSRU5DRV9aLCBmaWxsPSBHUk9VUCwgc3Ryb2tlID0gMCwNCiAgICAgICAgICAgICBzaXplID0gQUdFLCBzaGFwZSA9IEVEVV9MRVZFTCAsIHRleHQgPSB0ZXh0KSkgKw0KICBnZW9tX3BvaW50KGFscGhhID0gMC43KSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGNvcmVzUkFWTFQpICsNCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgNSkpICsNCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiQWdlIiwgbGltaXRzID0gYygxMCwgNTIpLCBicmVha3MgPSBzZXEoMTAsIDUwLCBieSA9IDEwKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJaIFNjb3JlIiwgbGltaXRzID0gYygtMywgMyksIGJyZWFrcyA9IHNlcSgtMywgMykpICsNCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gLTM6MywgY29sb3IgPSAiYmxhY2siLCBhbHBoYSA9IDAuMSkgKyANCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3IgPSAicmVkIiwgYWxwaGEgPSAwLjMsIGxpbmV0eXBlID0gIiIpICsNCiAgbGFicyh5ID0gIlkiLCB0aXRsZSA9ICJaIFNjb3JlIFJBVkxUIFJldHJvYXRpdmUgSW50ZXJmZXJlbmNlIiwgc2hhcGU9ICIiLCBzaXplID0gIiIpICsNCiAgdGhlbWVfY2xhc3NpYygpICsNCiAgDQogICAgdGhlbWUoDQogICAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KGZhbWlseSA9ICJBcmlhbCBOYXJyb3ciLCBzaXplID0gMTEuNSksDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsIGZhY2UgPSAiYm9sZCIpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyKSwNCiAgICBzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA5LCBmYWNlID0gIml0YWxpYyIpLA0KICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwNCiAgICBsZWdlbmQucG9zaXRpb24gPSAiIiwNCiAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gNSkNCiAgICApDQogICAgDQoNCiNwMjINCg0KcHAyMiA8LSBnZ3Bsb3RseShwMjIsIHRvb2x0aXA9InRleHQiKSANCg0KDQpwcDIyDQoNCg0KYGBg